In systems requiring intercommunication between two buses, it has often been common to arrange the buses to operate in synchronism with each other so that intercommunication can take place using control techniques having minimal complexity. In some applications, however, it is desirable, or necessary, that such buses be capable of operating independently of each other so that it is not possible to operate them in a synchronized manner at all times. For example, one bus may be a relatively slow speed bus, while the other bus may operate at a relatively higher speed. In a particular system, for example, the higher speed bus may be a system bus servicing internal devices which are a part of the data processing system and the slower speed bus may be an input/output (I/O) bus servicing external devices peripheral to the data processing system.
In such systems the buses are often arranged to be operated independently of each other, i.e., in an asynchronous manner. In providing intercommunication between them, if one bus requests communication access to the other bus and the other bus is currently busy, the requesting bus operation is normally halted and placed in a wait status until the other bus has terminated its current operation. The requesting bus is thereby placed in an undesired idle state during the required wait time period and cannot be used for any other purpose. Such operation is normally disadvantageous to the overall system performance, particularly when the idled bus is the one having the higher speed of operation.
It is desirable that an effective technique be devised for permitting two buses to operate independently of each other and at different bus operating speeds, while at the same time permitting intercommunication between them, when necessary, by permitting a device on one of the buses to communicate with a device on the other bus in a manner such that the time that the buses, particularly the higher speed bus, remain idle is minimized.